package vpag;

//类型转换 1.自动类型转换 2.强制类型转换
//自动类型转换：范围小的变量可以直接赋值给范围大的变量，但是反过来就不行
//byte->short->int->long->float->double
//char->int

public class typeChange {
    public static void main(String[] args) {

        //自动类型转换
        System.out.println("自动类型转换：");
        int a = 10;
        double b = a;
        System.out.println(b);

        //强制类型转换
        System.out.println("强制类型转换：");
        double c = 10.5;
        int d = (int)c;
        System.out.println(d);//小数强转整数直接丢掉小数部分

        int m = 1500;
        byte n = (byte)m;
        System.out.println(n);//出现数据溢出

        //基本数据类型转换
        String e = "10";
        int f = Integer.parseInt(e);
        System.out.println(f);

        //基本数据类型转换
       String g = "10.5";
       double h = Double.parseDouble(g);
       System.out.println(h);

        System.out.println("表达式的自动类型提升：");
        System.out.println(calc(10, 10.5, (byte)10));

    }

    //表达式的自动类型提升
    //表达式中小范围的数据类型变量会自动提升为范围大的数据类型变量

    public static double calc(int i, double j, byte k){
        return i+j+k;
    }
    //byte short char 运算时都会自动提升为int
    //int float double 运算时都会自动提升为double
    //运算结果形式由最高的决定
}
